Использование свойства РодительВерхнегоУровня расширения табличного поля списка

Если табличное поле отображает данные в виде дерева или иерархического списка, то может возникнуть ситуация, когда необходимо отобразить данные, начиная только с определенного уровня иерархии, включая все подчиненные уровни. Для решения данной задачи предназначено свойство РодительВерхнегоУровня расширений табличных полей списков справочников, планов видов характеристик, а также для списков планов счетов.  В качестве значения данного свойства используется значение, идентифицирующее строку отображаемого списка или значение Неопределено. Если данное свойство имеет значение Неопределено, то табличное поле отображает весь список, начиная с верхнего уровня иерархии, иначе в табличном поле отображаются только строки, подчиненные указанной строке. В данном случае, свойство РодительВерхнегоУровня содержит родителя верхнего уровня иерархии, начиная с которого отображаются данные в табличном поле.

Использование данного свойства может быть полезно в случае, когда необходимо ограничить выбор элементов из иерархического справочника. Например, пусть существует справочник контрагентов, состоящий из двух групп элементов: поставщиков и покупателей. Также существует два списка документов, содержащих приходные и расходные накладные. Требуется осуществлять выбор из группы поставщиков данного справочника  для списка приходных накладных, и из группы покупателей для списка расходных накладных. Выбор контрагента осуществляется в форме редактирования документа. Следовательно, для реализации данной задачи необходимо воспользоваться событием Начало выбора() поля ввода, в котором редактируется контрагент. 

Поясним использование данного метода на примере списка приходных накладных.

В обработчике события Начало выбора() поля ввода нужно получить ссылку на группу "Поставщики" справочника контрагенты. Для этого можно воспользоваться методом НайтиПоНаименованию() менеджера справочника контрагентов. Для передачи полученной ссылки в форму выбора контрагентов необходимо создать в данной форме специальный реквизит РодительВерхнегоУровня и присвоить полученную ссылку этому реквизиту. Затем, в обработчике события При открытии() формы выбора необходимо присвоить значение данного реквизита свойству РодительВерхнегоУровня расширения табличного поля списка справочника.

В нашем случае в форме выбора расположено два табличных поля, отображающих список контрагентов в виде дерева и иерархического списка. Поэтому полученную ссылку необходимо присвоить обоим табличным полям.

Пример обработки события Начало выбора() приведен ниже:

Копировать в буфер обмена
Процедура КонтрагентНачалоВыбора(Элемент, СтандартнаяОбработка)

    // Получение формы выбора справочника контрагентов
    ФормаВыбора = Справочники.Контрагенты.ПолучитьФормуВыбора(, Элемент);
    ФормаВыбора.ПараметрВыборГруппИЭлементов = ИспользованиеГруппИЭлементов.Элементы;

    // Установка текущего элемента
    ФормаВыбора.ПараметрТекущаяСтрока = Элемент.Значение;

    // Установка ограничения на отображение элементов справочника контрагентов
    ПоставщикиСсылка = Справочники.Контрагенты.НайтиПоНаименованию("Поставщики");
    Если ПоставщикиСсылка <> Справочники.Контрагенты.ПустаяСсылка() Тогда

        ФормаВыбора.РодительВерхнегоУровня = ПоставщикиСсылка;

    КонецЕсли;

    ФормаВыбора.Открыть();

    СтандартнаяОбработка = Ложь;

КонецПроцедуры

Пример обработки события При открытии() формы выбора контрагентов приведен ниже:

Копировать в буфер обмена
Процедура ПриОткрытии()

    ЭлементыФормы.СправочникДерево.РодительВерхнегоУровня = РодительВерхнегоУровня;
    ЭлементыФормы.СправочникСписок.РодительВерхнегоУровня = РодительВерхнегоУровня;

КонецПроцедуры

В результате в форме выбора контрагентов будут отображаться только поставщики.

Аналогичным образом можно установить ограничение на отображение в форме выбора только элементов, принадлежащих группе "Покупатели". Стоит отметить, что способ получения ссылки на группу справочника по наименованию приведен для примера, и правильней использовать другой способ определения группы.